<?php
/**
 *   工具类 涉及tag标签转换 排序 更新tag对应的文章数量 等
 * @date 2019/12/3
 * @author Xiaohui Zeng
 */

namespace app\api\controller;


use app\model\CmsTagData;
use app\model\CmsTags;

class util extends Base
{
    /**
     *   数组排序
     * @param $arr数组 $var需要排序的字段
     * @date 2019/12/3
     * @author Xiaohui Zeng
     */
    public function mymArrsort($arr, $var)
    {
        $tmp = [];
        $rst = [];
        foreach ($arr as $key => $trim) {
            $tmp[$key] = $trim[$var];
        }
        arsort($tmp);
        $i = 0;
        foreach ($tmp as $key1 => $trim1) {
            $rst[$i] = $arr[$key1];
            $i++;
        }
        return $rst;
    }

    /**
     *  将数组实现分页功能
     *  数组分页          每页数据数, 当前页, 数组, 排序(0不变，1反序)
     **/
    public function page_array($count=8, $page=1, $array, $order)
    {
        $start = ($page - 1) * $count; //计算每次分页的开始位置
        if ($order == 1) {
            $array = array_reverse($array);
        }
        $pagedata = array_slice($array, $start, $count);    //分隔数组
        return $pagedata;  //返回查询数据
    }

    /**
     *  处理tagName 将json字符串分割为数组
     *  参数 $arr 为 带有tagname字段的数组
     **/
    public function tagName($arr)
    {
//        dump($arr);
        if ($arr['tagname'] !== '' && $arr['tagname'] !== '[]') {
            $tagnameArr = json_decode($arr['tagname']);
            $Arr1 = [];
            if(is_array($tagnameArr)){
                for ($k = 0; $k < count($tagnameArr); $k++) {
                    $dataA = CmsTags::get(['name' => $tagnameArr[$k]]);
                    $tagid1 = $dataA->id;
                    $num = $dataA->num;
                    // 构造键值对类型数组
                    $item = [
                        "name" => $tagnameArr[$k],
                        "id" => $tagid1,
                        "num" => $num
                    ];
                    array_push($Arr1, $item);
                    $arr['tagname'] = $Arr1;
                }
            }
//            dump($arr);
        } else {
            $arr['tagname'] = [];
        }
        return $arr;
    }

    /**
     *   更新tag对应的文章数量 num
     * @param
     * @date 2019/12/3
     * @author Xiaohui Zeng
     */
    public function updataTagNum()
    {
        $tagNames = CmsTags::where([])->column('name'); // 查询name字段所有的tagname
        if ($tagNames) {
            for ($i = 0; $i < count($tagNames); $i++) {
                $data = CmsTags::get(['name' => $tagNames[$i]]);
                // 根据tagname 获取tagid
                $tagid = $data->id;
                $tagNum = CmsTagData::where('tagid', $tagid)->count();
                CmsTags::update([
                    'id' => $tagid,
                    'num' => $tagNum
                ]);
            }
        }
    }
}